package LeetCode;

public class Num206 {
    public ListNode reverseList(ListNode head) {
        //原地修改链表结构
//        if(head==null || head.next==null){
//            return head;
//        }
//        ListNode pre=null;
//        ListNode cur=head;
//        while (cur!=null){
//            ListNode next=cur.next;
//            cur.next=pre;
//            pre=cur;
//            cur=next;
//        }
//        return pre;

        //递归
        if(head==null || head.next==null){
            return head;
        }
        //此时第二个结点以及之后的结点的反转交给reverese()执行，并且返回的链表头就是最终的返回值
        ListNode secHead=head.next;
        ListNode newHead=reverseList(head.next);
        secHead.next=head;
        head.next=null;
        return newHead;
    }
}
